package com.example.qxfw.hbqx.service;

import com.example.qxfw.common.entity.qx.ImportantWeather;
import com.example.qxfw.common.entity.qx.MsgMediumSmallScale;
import com.example.qxfw.common.entity.qx.MsgMediumSmallScaleTemp;
import com.example.qxfw.common.entity.qx.SmallScaleStation;
import com.example.qxfw.common.entity.zy.AirpolLiveQx;
import com.example.qxfw.common.entity.zy.EnviroStation;


import java.util.Date;
import java.util.List;

public interface QxjcService {

    /**
     * 降序获取观测时间
     * @return
     */
    List<AirpolLiveQx> getObservtime();

    /**
     * 根据市县和站点id查询站点名字和id
     * @param stationid 站点id
     * @param city 城市
     * @param county 县
     * @return
     */
    List<SmallScaleStation> selectByStationIdAndCityAndNotCounty(String stationid, String city, String county);

    /**
     *根据观测时间段查询站点id，名字，和时间
     * @param observtimeStart 观测时间起点
     * @param observtimeEnd 观测时间终点
     * @return
     */

    List<MsgMediumSmallScaleTemp> selectByObservtimeOfMsgMediumSmallScaleTemp(Date observtimeStart, Date observtimeEnd);

    /**
     * 通过站点名字查询站点id
     * @param stationname 站点名字
     * @return
     */
    List<EnviroStation> selectByStationNameOfEnviroStation(String stationname);

    /**
     *根据观测时间段查询站点id，名字，和时间
     * @param observtimeStart 观测时间起点
     * @param observtimeEnd 观测时间终点
     * @return
     */

    List<MsgMediumSmallScaleTemp> selectByObservtimeDsitOfMsgMediumSmallScaleTemp(Date observtimeStart, Date observtimeEnd);

    /**
     * 根据站点名字和天气类型查询观测时间
     * @param weathertype 天气类型
     * @param stationname 站点名字
     * @return
     */
    List<ImportantWeather> selectByWeatherTypeAndStationNameOfImportantWeather(String weathertype, String stationname);

    /**
     * 根据天气类型，站点名字和观测时间段查询信息
     * @param observetimeStart 观测时间起点
     * @param observetimeEnd 观测时间终点
     * @param weathertype 天气类型
     * @param stationname 站点名字
     * @return
     */
    List<ImportantWeather> selectByWeatherTypeAndStationNameAndObservetimeOfImportantWeather(Date observetimeStart, Date observetimeEnd, String weathertype, String stationname);


    /**
     * 根据时间段获取雾霾能见度
     * @param observtimeStart 开始时间
     * @param observtimeEnd 结束时间
     * @return
     */
    List<MsgMediumSmallScale> selectByTimePeriodOfMsgMediumSmallScale(Date observtimeStart, Date observtimeEnd);

    /**
     * 获取所有自动站实况主表信息
     * @return
     */
    List<MsgMediumSmallScale> getAllOfMsgMediumSmallScale();

    /**
     * 区域自动站站点表信息
     * @return
     */
    List<SmallScaleStation> getAllOfSmallScaleStation();

    /**
     * 根据时间段要素和站点查询自动站实况主表
     * @param observtimeStart 开始时间
     * @param observtimeEnd 结束时间
     * @param element 要素
     * @param stationname 站点
     * @return
     */
    List<MsgMediumSmallScale> selectByTimePeriodAndElementAndStationIdOfMsgMediumSmallScale(
            Date observtimeStart, Date observtimeEnd, String element, String stationname
    );


}
